package com.sinai.mshab.client.ui.basic;

import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.Widget;
import com.sinai.mshab.client.ui.FormComponent;
import com.sinai.mshab.client.ui.aggregate.DataReceiver;

/**
 * The only purpose of this button is to notify the panel that contains it.
 * @author serge
 */
public class NotifierButton extends BasicFormComponent {
	
	private String message;
	private Button b;
	
	/**
	 * Creates a new notifier button with a message
	 * like "Another Instance of?"
	 * @param message the message for the button to display
	 */
	public NotifierButton(String message) {
		this.message =message;
		b = new Button(message);
		b.addClickListener(new MyListener());
		b.setStyleName("button");
		initWidget(b);
	}
	
	public Object clone() {
		return new NotifierButton(message);
	}
	
	/**
	 * Informs observers of change to this widget.
	 */
	private class MyListener implements ClickListener {
		public void onClick(Widget sender) {
				System.out.println("Another button got clicked.");
				notifyObservers();
		}
	}

	public void sendAnswer(DataReceiver receiver) {
		
	}

	/**
	 * Since we wouldn't want <code>NotifierButton</code> appearing in a printable page,
	 * our toPrint returns an empty {@link HorizontalPanel}.  
	 */
	public HorizontalPanel toReport() {

		return new HorizontalPanel();
	}

	/**
	 * Doesn't really have a value, so false is always returned.
	 * 
	 * @see FormComponent#isEmpty()
	 */
	public boolean isEmpty() {
		return false;
	}

}
